package com.thx.information.service;

import com.thx.common.service.BaseManager;
import com.thx.information.dao.InfoVoteLogDao;
import com.thx.information.model.InfoVoteLog;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true)
public class InfoVoteLogService extends BaseManager<InfoVoteLog> {

  private static final Logger logger = LoggerFactory.getLogger(InfoVoteLogService.class);

  @Autowired
  private InfoVoteLogDao infovoteLogDao;

  /**
   * 根据人员Id查询该人员已投票数量.
   * 
   * @param personnelId 人员Id,不能为空
   * @param infoid 信息Id,不能为空
   * @return 已投票数量
   */
  public int queryByPId(Long personnelId, Long infoid) {
    List<InfoVoteLog> list = infovoteLogDao.findByPIdAndInfoId(personnelId, infoid);
    return list != null && list.size() > 0 ? 1 : 0;
  }

  /**
   * 根据信息id查询总投票人数 .
   * 
   * @param infoId 信息Id,不能为空
   * @return 参与投票总人数
   */
  public Long queryCount(Long infoId) {
    return Long.valueOf(infovoteLogDao.findVotePerCountByInfoId(infoId));
  }

  /**
   * 根据信息Id删除所有投票明细数据.
   * 
   * @param infoId 信息id,不能为空
   */
  @Transactional(readOnly = false)
  public void deleteByInfoId(Long infoId) {
    infovoteLogDao.deleteByInfoId(infoId);
  }

  /**
   * 根据投票项查询投票总数.
   * 
   * @param voteItemId 投票项目id,不能为空
   * @return 查询投票总数
   */
  public Long queryCountByItemId(Long voteItemId) {
    return Long.valueOf(infovoteLogDao.findCountByVoteItemId(voteItemId));
  }

  /**
   * 根据投票id查询该投票项所有日志列表.
   * 
   * @param voteItemId 投票项目id,不能为空
   * @return 所有日志列表
   */
  public List<InfoVoteLog> votePersonal(Long voteItemId) {
    return infovoteLogDao.queryByItemId(voteItemId);
  }

  // /**
  // * @author 贺晋恩
  // * @date 2013-8-7 下午4:28:34
  // * @param vote
  // * @return
  // */
  // public Integer queryCount(InfoVoteLog vote) {
  // return infovoteLogDao.queryCount(vote);
  // }

  /**
   * 根据投票id查询该投票项所有日志列表.
   * 
   * @param voteItemId 投票项目id,不能为空
   * @return 所有日志列表
   */
  public List<InfoVoteLog> queryByItemId(Long voteItemId) {
    return infovoteLogDao.queryByItemId(voteItemId);
  }
}
